#pragma once
#ifndef _fastbird_Vec4_header_included_
#define _fastbird_Vec4_header_included_

#include <Engine/Math/Vec3.h>

namespace fastbird
{
	class Vec4
	{
	public:
		Vec4() {}
		Vec4(float _x, float _y, float _z, float _w)
			: x(_x), y(_y), z(_z), w(_w)
		{			
		}
		Vec4(const Vec3& xyz, float _w)
			: x(xyz.x), y(xyz.y), z(xyz.z), w(_w)
		{
		}

		Vec4(const char* s);

		float Dot( const Vec4& other ) const
		{
			return x * other.x + y * other.y + z * other.z + w * other.w;
		}

		inline Vec4 operator* (float scalar) const
		{
			return Vec4(x * scalar, y * scalar, z * scalar, w * scalar);
		}

		inline Vec4 operator+ (const Vec4& r) const
		{
			return Vec4(x + r.x, y + r.y, z + r.z, w + r.w);
		}

		bool operator== (const Vec4& other) const
		{
			return (x==other.x && y==other.y && z==other.z && w==other.w);
		}

	public:
		float x, y, z, w;
	};
};

#endif //_Vec3_header_included_